﻿//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
////求⼀个整数存储在内存中的⼆进制中1的个数
//int count_bite_one(int n) {
//	int count = 0;
//	for (int i = 0; i < 32; i++) {
//		if (n & (1 << i)) {
//			count++;
//		}
//	}
//	return count;
//}
///*原理：
//* 00000000 00000000 00000000 00000001  1的原码和补码
//* 1<<i会使1不断的翻倍，即让最后一个二进制位上的1依次往前移一位
//* n & (1 << i)==1当且仅当与n的补码的二进制位(也即n的原码)中与(1<<i)中1的位置
//*相对应的二进制位上数字为1
//*/
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int res = count_bite_one(num);
//	printf("二进制中1的个数 = %d\n", res);
//	return 0;
//}
////思考还能不能更加优化，这⾥必须循环32次的。